#include <bits/stdc++.h>
#ifndef DEBUG
#define debug
#endif
using namespace std;
using i64 = int64_t;

int main() {
  cin.tie(0)->sync_with_stdio(0);
  int n, k;
  cin >> n >> k;
  vector<vector<i64>> dp(n + 1, vector<i64>(n + 1));
  dp[0][0] = 1;
  for (int i = 1; i <= n; i ++) {
    for (int left = 0; left <= i - 1; left ++) {
      int right = i - 1 - left;
      for (int hl = 0; hl <= left; hl ++) {
        for (int hr = 0; hr <= right; hr ++) {
          if (max(hl, hr) < k * min(hl, hr)) continue;
          dp[i][max(hl, hr) + 1] += dp[left][hl] * dp[right][hr];
        }
      }
    }
  }
  cout << accumulate(dp[n].begin(), dp[n].end(), 0LL) << '\n';
}